package com.huawei;

import java.util.Scanner;

/**
 * 题目本质就是求最大回文长度，建议使用动态规划
题目：返回字符串的对称子串的最大长度
 例如：输入 ABBBA 输出：5
      输入 12HHHHA 输出：4
 思路：input 一个 str ，弄一个全局变量存储最大长度 maxLength ，遍历所有子字符串 ，写一个方法，计算是否是对称字符串，如果是，返回str.length
 方法如何写？
 如果是str.length 是奇数，比如是5，那么只能取 0,2 | 3,5 => subString(0，str.length/2)右边 subString(str.length/2+1,str.length)左边
 如果是str.length 是奇数，比如是4，那么只能取 0,2 | 2,4 => subString(0，str.length/2)右边 subString(str.length/2,str.length)左边
 也就是 右边  reverse一下.equals(左边) 那么是对称字符串，返回长度
 (方法可以拆更细粒度一点)
 一个方法：输入str，返回左右两边的子串
 另一个方法：输入左右两边，判断是不是对称字符串，如果是返回true。
 第三个方法：集成以上两个方法形成一个总的方法。
 result： 输入：fglxybqxlmbhgioijdttnfpdtvpfwvzhrzotmdpdepxslkdozwqhfcttgtqhedstxgfssrrwwetsyuzwgcsugoprjcqpzrpilhlhmmfzbibrylxiexunbjpzdblsbdyvtrmozqydchnksnpsqvvegstmnqedstodforypdvefpfrnivhqumucvzcmgleujcmejblxbriniydxihxglwoqyjcklkotjqnppfhrgxtpnjyemosnxrogmugycbmecqqbcdiqhjlrdslotcvofjxhdvrlhshrgcnrjtrfqneipjpwqntwuiyerfxmwyzpqxjnsfqkmmzpjfgemggnptwjrurjujkwdpgutcmpsnmybgshqpnbbvkponwldpqihcgkwdkjiqzitpoeywplkzwkobociunvbswqjkqvhfodopfdvnwchnqdcsrqjoerfhbrtxkkxefnvlotwjgosewezstdhjrhmqutorshmbnstkddmhifwotinekxmjvontvusiodcjqtdtxgmnxkrfisztmsjfteqziwmhpjmczjnhcbskenbrvmthhexbnokfrjhrpdibogwhnvtghysxyhsphllfhwpupdrnylkdnwzwkrgjyidypcdyebhofopycpondzcyfnqnutununudwdxydfvlwdbqltcnicdycfekpvhkteyjegfczohddqpoxokmpcitflgurhqbxybylxzxsemzwogjjxlxemffsmmgwuhuzryssebgloewctwvldvrjysjhfevfhswrbhgmjgumbvbyiouslgjgcbwwhycgjnsmkzwesrggigfthrzuquyphqwbhhkbjgmsuiscnnhzvhdspjusgcfuismrbbslevsmlckwkwkopvyspitzgmvfsptgbtbmovrregbxioobbmfslzjzvxreqijorodhdpfkxufgbwmfbupscghpirgpxffghxffgnojbxvnklkikzrgrqxfljnorzukjgplupguytoyrgbbmixruwzbksmekwvddsmwfhdywcnrizqvruukngbphvzlwokcrfvgzjodkvvqwlpybbjydehttceerffqrxfvgqnneqisrcecxmuywgjddufsxntzfwdtrotknvmwtmojieeiuqetodofwwocilwfcitedwtopwfzcemwrqtqgyzikiplfuifwsrfnlcpjijyrudjsuyrzqxnmbshevgecyddseoderwxwnyxtrsdkxxsuqbmcinusuqvwkyohwvpigfuygvwlqioznbrohesohgbhxiulvugzxeljkhyhqxdsscrgkstltuovobpwfophygjxfprwpxybmdwympyuxwgqvwwtoforxuokyubplppibcxikyxlyovvrqfkgzksitkzsqditcddzvtsmktxcjzwewwkssyxmwigrhrwrtroyscojqjvupnymmfrgtvevxcvxeskoioubrhdjmxtqykerdkcsuesbyguucwxigdbmzmufohxeiqsffbmheltsocneruolyuqfdmefdxfdsztoddgdqnlpchipctdtikxekrbcicrhgkkbokvjprxjpmdeinbqoisixmsgwxlurwnmhtuoxnqelinpsxtqhgcrvmgzppzhbmimpljtoegruilwuwhsogknrhozqlibqyietjpjdrxqviukmorhihrusqscuxxmiv
 超时。。。时间复杂度太高了
 思路是对的，但是太慢了，垃圾穷举法
 **/
public class HJ032_topSlow {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        String str = scanner.nextLine();

        int maxLength = 0;
        int length = str.length();
        //get 所有的子串
        for (int i = 0; i < length; i++) {
            for (int j = i+1; j <= length; j++) {
                String substring = str.substring(i,j);
                //节省点时间，看看能不能不超时。  还是超时。
                if(maxLength>substring.length()){
                    continue;
                }
                //System.out.println(substring);
                int symmetryLength = getSymmetryLength(substring);
                if(symmetryLength>maxLength){
                    maxLength = symmetryLength;
                }
            }
        }
        System.out.println(maxLength);



    }

    public static int getSymmetryLength(String substring){
        //拆分成左右两个字符串,分为奇数偶数两种情况
        int length = substring.length();
        String lStr = substring.substring(0,length/2);
        String rStr = "";
        if(length%2==0){
            //偶数
            rStr = substring.substring(length/2,length);
        }else{
            //奇数
            rStr = substring.substring(length/2+1,length);
        }


        //判断是否对称
        if (isSymmetry(lStr,rStr)) {
            //如果对称，返回子串长度
            return length;
        }
        return 0;
    }

    //判断是否对称
    public static boolean isSymmetry(String lStr,String rStr){
        StringBuilder lsb = new StringBuilder(lStr);
        StringBuilder rsb = new StringBuilder(rStr);
        //注意：StringBuilder.equals 是 ==
        return lsb.reverse().toString().equals(rsb.toString());
    }


}
